<?php 
function calendar(){
	if($_GET['ym']){
		$year = substr($_GET['ym'],0,4);
		$month = substr($_GET['ym'],4,(strlen($_GET['ym'])-4));
		if($month>12){
			$year += floor($month/12);
			$month = $month % 12;
		}
		if($year > 2030) $year = 2030;
		if($year < 1980) $year = 1980;
	}

	$year = isset($year) ? $year : date('Y');		//年份
	$month = isset($month) ? $month : date('n');	//月份

	//今天
	if($year==date('Y') && $month==date('n')) $today = date('j');

	//如果是1月份，上个月是12月
	if($month-1 == 0) 
		$prevmonth = ($year - 1)."12";
	else
		$prevmonth = $year.($month - 1); 

	//如果是12月，下个月是1月
	if($month+1 == 13)
		$nextmonth = ($year+1)."1";
	else
		$nextmonth = $year.($month+1); 

	//获得去年和明年年份
	$prevyear = ($year - 1).$month; 
	$nextyear = ($year + 1).$month; 

	//头部
	echo '<table width="200" border="0" cellpadding="2" cellspacing="2">
			<tr>
				<td class="weekday"><a href="?ym='.$prevyear.'"><<</a></td> 
				<td class="normalday"><a href="?ym='.$prevmonth.'"><</a></td>
				<td colspan="3" class="normalday">'.$year.' - '.$month.'</td> 
				<td class="normalday"><a href="?ym='.$nextmonth.'">></a></td> 
				<td class="weekday"><a href="?ym='.$nextyear.'">>></a></td> 
			</tr>
			<tr> 
				<td width="27" class="weekday">日</td>
				<td width="27" class="normalday">一</td>
				<td width="27" class="normalday">二</td>
				<td width="27" class="normalday">三</td>
				<td width="27" class="normalday">四</td>
				<td width="27" class="normalday">五</td>
				<td width="27" class="weekday">六</td>
			</tr>';
	
		$nowtime = mktime(0,0,0,$month,1,$year);//当月１号转为秒 
		$daysofmonth = date(t,$nowtime);//当月天数 
		$weekofbeginday = date(w,$nowtime);//当月第一天是星期几 
		$weekofendday = date(w,mktime(0,0,0,$month+1,0,$year));//当月最后一天是星期几 
		$daysofprevmonth = date(t,mktime(0,0,0,$month,0,$year));//上个月天数 

		$count = 1;//计数 

		//列出上月后几天 
		for($i = 1 ; $i <= $weekofbeginday ; $i++){
			echo "<td class='othermonth'>".($daysofprevmonth-$weekofbeginday+$i)."</td>";
			$count++;
		}
		
		//当月全部
		for($i = 1 ; $i <= $daysofmonth ; $i++){
			$css = ($count%7==0 || $count%7==1)?"weekday":"normalday";
			if($i == $today) $css .= "today";
			echo "<td class='".$css."'>".$i."</td>";
			if($count%7==0) echo "</tr><tr>";
			$count++;
		}
		
		//下月前几天 
		for ($i = 1;$i <= 6-$weekofendday;$i++){ 
			echo "<td class='othermonth'>".$i."</td>";
		}
		echo '<tr>
				<td colspan="7"></td> 
			</tr>
		</table>'; 
	}
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>calendar</title> 
<style type="text/css"> 
<!-- 
.weekday { 
font-size: 9pt; 
color: #FF0000; 
text-align: center; 
} 
.normalday { 
font-size: 9pt; 
color: #000000; 
text-align: center; 
} 
.weekdaytoday { 
font-size: 9pt; 
color: #FF0000; 
text-align: center; 
background-color: #FFD9D9; 
font-weight: bold; 
} 
.normaldaytoday { 
font-size: 9pt; 
color: #000000; 
text-align: center; 
background-color: #DDDDDD; 
font-weight: bold; 
} 
.othermonth { 
font-size: 9pt; 
font-style: italic; 
color: #999999; 
text-align: center; 
} 
--> 
</style> 
</head> 

<body> 
<?php calendar();?> 
</body> 
</html>